package io.lvdaxian.mybatis05.transaction;


import io.lvdaxian.mybatis05.session.TransactionIsolationLevel;

import javax.sql.DataSource;
import java.sql.Connection;

/**
 * 表示 事务工厂接口，构建事务的工厂类
 *
 * @author lihh
 */
public interface TransactionFactory {
  /**
   * 根据 Connection连接 构建事务的方法
   *
   * @param connection 连接
   * @return 返回事务
   * @author lihh
   */
  Transaction newTransaction(Connection connection);
  
  /**
   * 通过特定的参数 构建事务
   *
   * @param dataSource   db 数据源
   * @param level        事务等级
   * @param isAutoCommit 是否自动提交
   * @return 返回 事务
   * @author lihh
   */
  Transaction newTransaction(DataSource dataSource, TransactionIsolationLevel level, boolean isAutoCommit);
}
